package mx.itesm.papamastodon.dienosaurs;

import org.andengine.engine.camera.Camera;
import org.andengine.entity.scene.background.SpriteBackground;
import org.andengine.entity.sprite.ButtonSprite;
import org.andengine.entity.sprite.Sprite;
import org.andengine.input.touch.TouchEvent;
import org.andengine.opengl.util.GLState;

/**
 * Created by Papa Mastodon on 03/05/2015.
 */
public class EscenaGameOver2 extends EscenaBase {

    private Sprite spriteFondo;
    private ButtonSprite again;
    private ButtonSprite menu;

    public void crearEscena() {
        // Creamos el sprite de manera óptima
        spriteFondo = new Sprite(0, 0, admRecursos.regionFondoGameOver2, admRecursos.vbom) {
            @Override
            protected void preDraw(GLState pGLState, Camera pCamera) {
                super.preDraw(pGLState, pCamera);
                pGLState.enableDither();
            }
        };

        menu = new ButtonSprite((ControlJuego.ANCHO_CAMARA / 2) + 200, (ControlJuego.ALTO_CAMARA / 2) - 150, admRecursos.regionBtnMenu2, admRecursos.vbom) {

            // Aquí el código que ejecuta el botón cuando es presionado
            @Override
            public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float pTouchAreaLocalX, float pTouchAreaLocalY) {
                if (pSceneTouchEvent.isActionUp()) {
                    // Cambia a la escena de JUEGO
                    admEscenas.crearEscenaMenu();
                    admEscenas.setEscena(TipoEscena.ESCENA_MENU);
                    admEscenas.liberarEscenaGameOver2();
                }
                return super.onAreaTouched(pSceneTouchEvent, pTouchAreaLocalX, pTouchAreaLocalY);
            }
        };


        again = new ButtonSprite((ControlJuego.ANCHO_CAMARA / 2) - 200, (ControlJuego.ALTO_CAMARA / 2) - 150, admRecursos.regionBtnAgain2, admRecursos.vbom) {

            // Aquí el código que ejecuta el botón cuando es presionado
            @Override
            public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float pTouchAreaLocalX, float pTouchAreaLocalY) {
                if (pSceneTouchEvent.isActionUp()) {
                    // Cambia a la escena de JUEGO
                    admEscenas.crearEscenaJuego2();
                    admEscenas.setEscena(TipoEscena.ESCENA_JUEGO2);
                    admEscenas.liberarEscenaGameOver2();
                }
                return super.onAreaTouched(pSceneTouchEvent, pTouchAreaLocalX, pTouchAreaLocalY);
            }
        };

        // Configuración de la imagen
        spriteFondo.setPosition(ControlJuego.ANCHO_CAMARA / 2, ControlJuego.ALTO_CAMARA / 2);

        // Crea el fondo de la pantalla
        SpriteBackground fondo = new SpriteBackground(1, 0.5f, 0, spriteFondo);
        setBackground(fondo);
        setBackgroundEnabled(true);
        setTouchAreaBindingOnActionDownEnabled(true);

        this.attachChild(again);
        this.registerTouchArea(again);
        this.attachChild(menu);
        this.registerTouchArea(menu);
    }

    @Override
    public void onBackKeyPressed() {
        // Regresar al MENU principal
        admEscenas.crearEscenaMenu();
        admEscenas.setEscena(TipoEscena.ESCENA_MENU);
        admEscenas.liberarEscenaGameOver2();
    }

    @Override
    public TipoEscena getTipoEscena() {
        return TipoEscena.ESCENA_GAME_OVER2;
    }

    @Override
    public void liberarEscena() {
        // Liberar cada recurso usado en esta escena
        spriteFondo.detachSelf();   // Se desconecta de la escena
        spriteFondo.dispose();      // Libera la memoria

        this.detachSelf();      // La escena se deconecta del engine
        this.dispose();         // Libera la memoria
    }
}
